home *** CD-ROM | disk | FTP | other *** search
/ Aminet 7 / Aminet 7 - August 1995.iso / Aminet / comm / mebbs / gmine21.lha / GOLDMINE / GOLDMINE.REXX < prev    next >
OS/2 REXX Batch file  |  1994-09-01  |  10KB  |  345 lines

  1. /* original COC BBS 414-633-1172 */
  2. /* re-written and improved by */
  3. /* Robert Lehman of Southwinds bbs for mebbsnet >1.5x*/
  4. /* Improved Even More By Eric Douglas A.A.A. CLUB BBS*/
  5. /* Sept. 1st 1994 (702) 243-9526 */
  6.  
  7. SIGNAL ON ERROR
  8. SIGNAL ON SYNTAX
  9. SIGNAL ON IOERR
  10. SIGNAL ON FAILURE
  11.  
  12. parse arg LineNumber
  13.  
  14. OPTIONS RESULTS
  15.  
  16. DoorName = "Goldmine"
  17.  
  18. if( ~show( 'l', "mebbsarexx.library" ) )then do
  19. if( ~addlib( "mebbsarexx.library", 0, -30, 0 ) )then do
  20.       say "Could not open library"
  21.       exit 10
  22.    end
  23. end
  24.  
  25.                                        /* make sysop changes here */
  26. handles='yes'                         /* change to 'no' if your bbs dont allow handles */
  27. Bulpath='doors:goldmine/highest.txt' /* change to what path you want the hi score file kept */
  28.  
  29.                         /* do not modify anything below this line */
  30.  
  31. version = " Version 2.1 "
  32. if handles = yes then do
  33. call getvar doorname,linenumber,21
  34. UName = result
  35. end
  36. else do
  37. call getvar doorname,linenumber,1
  38. UName = result
  39. end
  40. Points=0
  41. highest = 0
  42. highname = 0
  43. call getvar doorname,linenumber,8
  44. gfx = result
  45. if gfx = 1 then do
  46. CLS = 'H'
  47. HOM = ''
  48. BGD = ''
  49. RED = ''
  50. YLW = ''
  51. GRN = ''
  52. CYN = ''
  53. MAG = ''
  54. BLU = ''
  55. GCN = ''
  56. RES = ''
  57. end
  58. else do
  59. CLS = 'H'
  60. HOM = ''
  61. BGD = ''
  62. RED = ''
  63. YLW = ''
  64. GRN = ''
  65. CYN = ''
  66. MAG = ''
  67. BLU = ''
  68. GCN = ''
  69. RES = ''
  70. end
  71. blanks = '                                 '
  72. Round=0
  73. Times=10
  74. BCK1='25H'
  75. BCK2='25H'
  76. BCK3='6H'
  77.  
  78. Intro:
  79. call message doorname,linenumber, CLS,1
  80. call message doorname,linenumber, YLW'          _',1
  81. call message doorname,linenumber, '         / _      |\/|',1
  82. call message doorname,linenumber, '         \_/'RES'old  'YLW' |  |'RES'ine',1
  83. call message doorname,linenumber, ' ',1
  84. call message doorname,linenumber, BLU'            'version,1
  85. call message doorname,linenumber, ' ',1
  86. call message doorname,linenumber, ' ',1
  87. call message doorname,linenumber, ' ',1
  88. call message doorname,linenumber, GRN' You have 'BLU'10'GRN' tries to find the gold.',1
  89. call message doorname,linenumber, CYN,1
  90. Tries = 0
  91. call hotkey doorname,linenumber, 'Do you need instructions (y/N)? '
  92. /*call check*/
  93. Inst = upper(result)
  94. if Inst='Y' then call Docs
  95. call time 'R'           /* reset timer */
  96. do i = 1 to 10
  97.  highscore.i = 0
  98.  highname.i = ' '
  99. end
  100. call message doorname,linenumber, CLS,1
  101. call message doorname,linenumber, '    Top Goldminer',1
  102. call old_highest        /* Get Hi Score and display it */
  103. do i = 1 to 1
  104.    call message doorname,linenumber, highname.i' Found a total of 'highscore.1' Gold bars',1
  105. end
  106. call message doorname,linenumber,'',1
  107. call hotkey doorname,linenumber, 'Hit return be BEGIN the GAME....'
  108. call check
  109. call Randy
  110. return
  111.  
  112. Randy:
  113. Round=Round+1
  114. Times=Times-1
  115. Tries=1
  116. X=RANDOM(1,10,Time(s))        /* Row */
  117. Y=RANDOM(1,10,TIme(s))        /* Column */
  118.  
  119. Grid:
  120. call message doorname,linenumber, RES||CLS,1
  121. call message doorname,linenumber, MAG'     ___________________',1
  122. call message doorname,linenumber, GRN'  1 'MAG'|_|_|_|_|_|_|_|_|_|_|',1
  123. call message doorname,linenumber, GRN'  2 'MAG'|_|_|_|_|_|_|_|_|_|_|          'BLU'N',1
  124. call message doorname,linenumber, GRN'  3 'MAG'|_|_|_|_|_|_|_|_|_|_|',1
  125. call message doorname,linenumber, GRN'  4 'MAG'|_|_|_|_|_|_|_|_|_|_|          'YLW'|',1
  126. call message doorname,linenumber, GRN'  5 'MAG'|_|_|_|_|_|_|_|_|_|_|          'YLW'|',1
  127. call message doorname,linenumber, GRN'  6 'MAG'|_|_|_|_|_|_|_|_|_|_|     'BLU'W 'YLW'---|--- 'BLU'E',1
  128. call message doorname,linenumber, GRN'  7 'MAG'|_|_|_|_|_|_|_|_|_|_|          'YLW'|',1
  129. call message doorname,linenumber, GRN'  8 'MAG'|_|_|_|_|_|_|_|_|_|_|          'YLW'|',1
  130. call message doorname,linenumber, GRN'  9 'MAG'|_|_|_|_|_|_|_|_|_|_|',1
  131. call message doorname,linenumber, GRN' 10 'MAG'|_|_|_|_|_|_|_|_|_|_|          'BLU'S',1
  132. call message doorname,linenumber, CYN'     1 2 3 4 5 6 7 8 9 10'RES,1
  133. call message doorname,linenumber, ' ',1
  134. call message doorname,linenumber, GRN,1
  135. call Ask
  136. return
  137.  
  138. Ask:
  139. call message doorname,linenumber, GRN 'H',1
  140. call hotkey doorname,linenumber, ' Enter Row    (1-10) >    'BCK1
  141. A = upper(result)
  142. call check
  143.   if A='Q' then call getout
  144.   if A='?' then call Docs
  145.   if A<1 | A>10 then call Ask
  146.   if A=1 then C=3
  147.   if A=2 then C=4
  148.   if A=3 then C=5
  149.   if A=4 then C=6
  150.   if A=5 then C=7
  151.   if A=6 then C=8
  152.   if A=7 then C=9
  153.   if A=8 then C=10
  154.   if A=9 then C=11
  155.   if A=10 then C=12
  156. call message doorname,linenumber, CYN 'H',1
  157. call hotkey doorname,linenumber, ' Enter Column (1-10) >    'BCK2
  158. D = upper(result)
  159. call check
  160. if D = 'Q' then call getout
  161.  if D<1 | D>10 then call Ask
  162.  if D=1 then E=6
  163.  if D=2 then E=8
  164.  if D=3 then E=10
  165.  if D=4 then E=12
  166.  if D=5 then E=14
  167.  if D=6 then E=16
  168.  if D=7 then E=18
  169.  if D=8 then E=20
  170.  if D=9 then E=22
  171.  if D=10 then E=24
  172.   if A<X then Hint1='South'
  173.   if A>X then Hint1='North'
  174.   if A=X then Hint1='     '
  175.   if D>Y then Hint2='West'
  176.   if D<Y then Hint2='East'
  177.   if D=Y then Hint2='    '
  178. call Sendit
  179. return
  180.  
  181. Sendit:
  182.  if A=X & D=Y then call Won
  183. Tries=Tries+1
  184.  if Tries>Times+1 then call Lost
  185. F=A+2
  186. call message doorname,linenumber, YLW'    Hint: 'BLU Hint1 Hint2,0
  187. call message doorname,linenumber,'',1
  188. call message doorname,linenumber, MAG' Guess 'YLW Tries,1
  189. call message doorname,linenumber, HOM''F';'E'H'BGD' 'RES,1
  190. call message doorname,linenumber, 'H',1
  191. call Ask
  192. return
  193.  
  194. Won:
  195.  doo=Points
  196.  Points = Points+((11-Tries)*100)
  197.  coo=doo-Points
  198.  coo=coo-(coo*2)
  199.  eoo=Tries-1
  200. call message doorname,linenumber, CLS,1
  201. call message doorname,linenumber, ' ',1
  202. call message doorname,linenumber, GRN' You made it through round 'MAG Round GRN'.',1
  203. call message doorname,linenumber, ' You found the gold in 'BLU Tries GRN'tries!',1
  204. call message doorname,linenumber, ' ',1
  205. call message doorname,linenumber, CYN' You found 'GRN'$'RED coo CYN'this round.',1
  206. call message doorname,linenumber, ' You now have 'GRN'$'YLW Points CYN'gold.'RES,1
  207. call message doorname,linenumber, ' ',1
  208. call message doorname,linenumber, YLW' You now have 'RED Times YLW'tries to find the gold.',1
  209. boo=Round+1
  210. call hotkey doorname,linenumber, ' Are you ready for round 'MAG boo  YLW'('GRN'y'YLW'/'RED'N'YLW') ? 'RES
  211. Again = upper(result)
  212. call check
  213. if Again = 'N' | Again=' ' then call new_highest
  214.  if Again = 'N' then call getout
  215.  if Again = 'Y' then call Randy
  216. return
  217.  
  218. Lost:
  219.  doo=Points
  220.  Points = Points+((11-Tries)*100)
  221.  coo=doo-Points
  222.  coo=coo-(coo*2)
  223. call message doorname,linenumber, CLS,1
  224. call message doorname,linenumber, ' ',1
  225. call message doorname,linenumber, GRN' You lost in round 'MAG'Round'GRN'.',1
  226. call message doorname,linenumber, ' ',1
  227. call message doorname,linenumber, CYN' You found 'GRN'$'RED'coo 'CYN'this round.',1
  228. call message doorname,linenumber, ' You now have 'GRN'$'YLW'Points 'CYN'gold.'RES,1
  229. call message doorname,linenumber, ' ',1
  230. call new_highest
  231. call hotkey doorname,linenumber, 'Hit RETURN when ready....'
  232. call check
  233. call getout
  234. return
  235.  
  236. old_highest:
  237.  if ~Open(fnn,bulpath,'R') then return
  238.  do i=1 to 10
  239.   highname.i = Readln(fnn)
  240.   highscore.i = Readln(fnn)
  241.  end
  242.  junk = Close(fnn)
  243. return
  244.  
  245. new_highest:
  246.  if UName = '' then return  /* saves from screwups from running offline */
  247.  if points <= highscore.10 then return
  248.  call message doorname,linenumber, ' ',1
  249.  call message doorname,linenumber, 'CONGRATULATIONS!',1
  250.  call message doorname,linenumber, 'You are in the top 10! Saving your name and score for posterity...',1
  251.  highscore.10 = points
  252.  highname.10 = UName
  253.  do forever
  254.    changes = 0
  255.    do i = 1 to 9
  256.     ihatearexx = i+1
  257.     if highscore.ihatearexx > highscore.i then
  258.      do
  259.       temp = highscore.i
  260.       tempname = highname.i
  261.       highscore.i = highscore.ihatearexx          /* Bubblehead sort */
  262.       highname.i = highname.ihatearexx
  263.       highscore.ihatearexx = temp
  264.       highname.ihatearexx = tempname
  265.       changes = 1
  266.      end
  267.    end
  268.    if changes = 0 then leave
  269.  end
  270.     if ~Open(fnn,bulpath,'W') then return
  271.     do i = 1 to 10
  272.       if Writeln(fnn,highname.i) < 1 then return
  273.       if Writeln(fnn,highscore.i) < 1 then return
  274.     end
  275.     junk = Close(fnn)
  276. call hotkey doorname,linenumber, 'Hit RETURN when ready....'
  277. call check
  278. return
  279.  
  280. Docs:
  281. call Readgra Doorname,Linenumber, 'Doors:Goldmine/Docs'
  282. call grid
  283. return
  284.  
  285. /*********************Procedures*****************************/
  286.  
  287.  
  288. getout:
  289. call message doorname,linenumber, ' ',1
  290. call message doorname,linenumber,CLS'',1
  291. call message doorname,linenumber, ' ',1
  292. call exit_door DoorName,LineNumber
  293. exit 0
  294.  
  295. die:
  296. call message doorname,linenumber, ' ',1
  297. call message doorname,linenumber,CLS'',1
  298. call message doorname,linenumber, ' ',1
  299. call exit_door DoorName,LineNumber
  300. exit 10
  301.  
  302. SYNTAX:
  303.    call message doorname,linenumber, '*GOLDMINE*  Got a syntax error.  PLEASE notify the sysop.',1
  304.    err_line = SIGL ; sev = RC
  305.    Call message doorname,linenumber, 'Line: 'err_line'   Severity: 'sev,1
  306.    call hotkey doorname,linenumber,'Press return...'
  307.    signal Die
  308.  
  309. check:      
  310. call cdetect doorname,linenumber
  311. carrier = result
  312. if carrier = "no carrier!" then do
  313. signal die
  314. end
  315. return
  316.  
  317. IOERR:
  318. call message doorname,linenumber,"**Crash** Looks like we got an I/O error somewhere!",1
  319.    err_line = SIGL ; sev = RC
  320.    Call message doorname,linenumber, 'Line: 'err_line'   Severity: 'sev,1
  321.    call hotkey doorname,linenumber,'Press return...'
  322. signal die
  323.  
  324. ERROR:
  325. Call message doorname,linenumber, '**ALERT** Error!',1
  326.    err_line = SIGL ; sev = RC
  327.    Call message doorname,linenumber, 'Line: 'err_line'   Severity: 'sev,1
  328.    call hotkey doorname,linenumber,'Press return...'
  329. signal die
  330.  
  331. Crash_N_Burn:
  332. call message doorname,linenumber,"Looks like we're gonna have to bail outta this mess......",1
  333. call exit_door DoorName, LineNumber
  334. exit 10
  335.  
  336. FAILURE:
  337.  
  338.    Call message doorname,linenumber, '**ALERT** Failure!',1
  339.    err_line = SIGL ; sev = RC
  340.    Call message doorname,linenumber, 'Line: 'err_line'   Severity: 'sev,1
  341.    call hotkey doorname,linenumber,'Press return...'
  342. call exit_door DoorName,LineNumber
  343. exit 10
  344.  
  345.